package redis

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
	"io/ioutil"
)

func main() {
	// 连接到源 Redis 服务器
	sourceClient := redis.NewClient(&redis.Options{
		Addr:     "192.168.1.171:31101", // 源 Redis 服务器地址
		Password: "",                    // 源 Redis 服务器密码
		DB:       0,                     // 使用的数据库
	})

	// 导出数据到 RDB 文件
	rdbDump, err := sourceClient.Dump(context.Background(), "mykey").Bytes()
	if err != nil {
		fmt.Println("Failed to export data:", err)
		return
	}

	// 将 RDB 数据写入文件
	err = ioutil.WriteFile("dump.rdb", rdbDump, 0644)
	if err != nil {
		fmt.Println("Failed to write RDB data to file:", err)
		return
	}
	fmt.Println("Data exported successfully to dump.rdb")

	// 连接到目标 Redis 服务器
	targetClient := redis.NewClient(&redis.Options{
		Addr:     "dev.redis.huadaocart.corp:6379", // 目标 Redis 服务器地址
		Password: "",                               // 目标 Redis 服务器密码
		DB:       0,                                // 使用的数据库
	})

	// 读取文件中的 RDB 数据
	rdbData, err := ioutil.ReadFile("dump.rdb")
	if err != nil {
		fmt.Println("Failed to read RDB data from file:", err)
		return
	}

	// 导入 RDB 数据到目标 Redis
	_, err = targetClient.Do(context.Background(), "RESTORE", "mykey", "0", rdbData).Result()
	if err != nil {
		fmt.Println("Failed to import data:", err)
		return
	}
	fmt.Println("Data imported successfully")
}
